【OpenCV实战】视频转图像,视频抽帧,图像合成视频 您所在的位置:网站首页 python 图像转视频 【OpenCV实战】视频转图像,视频抽帧,图像合成视频

【OpenCV实战】视频转图像,视频抽帧,图像合成视频

2024-06-17 19:34| 来源: 网络整理| 查看: 265

写在前面:大家好!我是【AI 菌】,一枚爱弹吉他的程序员。我热爱AI、热爱分享、热爱开源! 这博客是我对学习的一点总结与记录。如果您也对 深度学习、机器视觉、算法、Python、C++ 感兴趣,可以关注我的动态,我们一起学习,一起进步~ 我的博客地址为:【AI 菌】的博客 我的Github项目地址是:【AI 菌】的Github

前言:

在做深度学习目标检测项目中,有的时候需要自己制作图像数据集。一张张去拍图片是不太现实的做法。我们经常是先用相机拍取连续的视频,然后再将视频切成若干图片。下面就是我切分后的效果: 在这里插入图片描述

这篇文章主要来教大家如何实现视频与图像之间的互转。

一、视频转图像

由于连续视频相邻帧的图像相似度很高,这对于数据集来说并不是一件好的事情,所以可以隔帧取图像。在下面的示例中,我就是每隔10帧取一次。

Python 代码如下:

import cv2 def video2images(Video_Dir): """ function: video to pictures author: AIJun date:2021/3/17 """ cap = cv2.VideoCapture(Video_Dir) c = 1 # 帧数起点 index = 1 # 图片命名起点,如1.jpg if not cap.isOpened(): print("Cannot open camera") exit() while True: # 逐帧捕获 ret, frame = cap.read() # 如果正确读取帧,ret为True if not ret: print("Can't receive frame (stream end?). Exiting ...") break if c % 10 == 0: cv2.imwrite('pictures/' + str(index) + '.jpg', frame) index += 1 c += 1 cv2.waitKey(1) # 按键停止 if cv2.waitKey(1) == ord('q'): break cap.release() Video_Dir = "D:\数据集\data3_16\WIN_20210316_17_46_54_Pro.mp4" video2images(Video_Dir) 二、图像合成视频

下面展示了,将连续的图片合成一条视频,视频的帧率为24。Python代码如下:

import glob import os import cv2 def images2video(image_dir, save_name): fps = 24 fourcc = cv2.VideoWriter_fourcc('X','V','I','D') video_w = cv2.VideoWriter(save_name, fourcc, fps, (1920, 1080)) # 扫描文件夹中所有jpg文件 images = glob.glob(os.path.join(image_dir, "*.jpg")) for i in range(1, len(images)): # 选中名为"{}.jpg".format(1) = 1.jpg image_name = os.path.join(image_dir, "{}.jpg".format(i)) frame = cv2.imread(image_name) video_w.write(frame) video_w.release() image_dir = "D:\Project\VideoToImage\pictures" save_name = "test.avi" images2video(image_dir, save_name)

由于水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!

在这里插入图片描述 推荐文章

【C++21天养成计划】不聊学习只谈干货(Day1)【人生苦短,我学 Python】序言——不学点Python你就out了?TF2.0深度学习实战(一):分类问题之手写数字识别


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有